home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / Information / CSMP Digest / volume 1 / csmp-v1-158.txt < prev    next >
Encoding:
Text File  |  1994-12-08  |  42.1 KB  |  1,113 lines  |  [TEXT/R*ch]

  1. C.S.M.P. Digest             Mon, 03 Aug 92       Volume 1 : Issue 158
  2.  
  3. Today's Topics:
  4.  
  5.     Displaying PICT all at once?
  6.     Macs cost too much
  7.     "True" Multitasking -- a quick summary
  8.     QuickDraw (was re: XWindows)
  9.     Tech Notes Stack
  10.     appe application
  11.     MacApp I<Classname> and ViewEdit
  12.     Vertical Text in QuickDraw
  13.  
  14.  
  15.  
  16. The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
  17.  
  18. The digest is a collection of article threads from the internet newsgroup
  19. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  20. regularly and want an archive of the discussions.  If you don't know what a
  21. newsgroup is, you probably don't have access to it.  Ask your systems
  22. administrator(s) for details.  (This means you can't post questions to the
  23. digest.)
  24.  
  25. Each issue of the digest contains one or more sets of articles (called
  26. threads), with each set corresponding to a 'discussion' of a particular
  27. subject.  The articles are not edited; all articles included in this digest
  28. are in their original posted form (as received by our news server at
  29. cs.uoregon.edu).  Article threads are not added to the digest until the last
  30. article added to the thread is at least one month old (this is to ensure that
  31. the thread is dead before adding it to the digest).  Article threads that
  32. consist of only one message are generally not included in the digest.
  33.  
  34. The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu
  35. [128.223.8.8] in the directory /pub/mac/csmp-digest.  The most recent issues
  36. are available from sumex-aim.stanford.edu [36.44.0.6] in the directory
  37. /info-mac/digest/csmp.  If you don't have ftp capability, the sumex archive
  38. has a mail server; send a message with the text '$MACarch help' (no quotes)
  39. to LISTSERV@ricevm1.rice.edu for more information.
  40.  
  41. The digest is also available via email.  Just send a note saying that you
  42. want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
  43. automatically receive each new issue as it is created.  Sorry, back issues
  44. are not available through the mailing list.
  45.  
  46. Send administrative mail to mkelly@cs.uoregon.edu.
  47.  
  48.  
  49. -------------------------------------------------------
  50.  
  51. From: paul@fairgate.uucp (Paul Robichaux)
  52. Subject: Displaying PICT all at once?
  53. Organization: Fairgate Technologies
  54. Date: Sun, 21 Jun 92 21:35:30 -0600
  55.  
  56. I have a requirement to display a 32-bit PICT "all at once"- that is,
  57. when I show it, I need to blast it to the screen as fast as possible.
  58.  
  59. On a IIci with an EMachines accelerated graphics card, I can see the
  60. picture being drawn. At present, my app is using the sample GetPICTData
  61. code as presented in IM vol 5. I've looked at Steven Ritter's Museum
  62. application, but my C skills are too weak to fully grasp it as yet.
  63.  
  64. Can anyone suggest a _fast_ way to get that image onscreen? I've 
  65. considered loading the picture into an offscreen bitmap and using
  66. CopyBits, and will probably try that tomorrow.
  67.  
  68. Any suggestions from you Color QD gurus (you listening, Jamie?) would
  69. be most very welcome.
  70.  
  71. Skaal,
  72. - -Paul
  73. - ---
  74.                              Paul Robichaux, KD4JZG                       
  75.          paul@fairgate.uucp -or- ...uunet!{sci34hub,xavax}!fairgate!paul
  76.  
  77. +++++++++++++++++++++++++++
  78.  
  79. From: draper@odin.mda.uth.tmc.edu (E.J. Draper)
  80. Date: 22 Jun 1992 17:59:15 GMT
  81. Organization: U.T.M.D. Anderson Cancer Center
  82.  
  83.  
  84.  
  85.  
  86. Copybits.
  87.  
  88. +++++++++++++++++++++++++++
  89.  
  90. From: Steve Kohlmeyer
  91. Date: 22 Jun 92 18:31:45 GMT
  92. Organization: University of Minnesota
  93.  
  94. In article <a66aa6a2@fairgate.uucp> paul@fairgate.uucp (Paul Robichaux) writes:
  95. >I have a requirement to display a 32-bit PICT "all at once"- that is,
  96. >when I show it, I need to blast it to the screen as fast as possible.
  97. >
  98. >On a IIci with an EMachines accelerated graphics card, I can see the
  99. >picture being drawn. At present, my app is using the sample GetPICTData
  100. >code as presented in IM vol 5. I've looked at Steven Ritter's Museum
  101. >application, but my C skills are too weak to fully grasp it as yet.
  102. >
  103. >Can anyone suggest a _fast_ way to get that image onscreen? I've 
  104. >considered loading the picture into an offscreen bitmap and using
  105. >CopyBits, and will probably try that tomorrow.
  106. >
  107.  
  108. Drawing offscreen and using CopyBits will make the image "appear" 
  109. on the screen faster.  However, if your image is large and deep 
  110. enough you will still see some scrolling with CopyBits.
  111.  
  112. The best way to make your image appear on the screen "instantly" is 
  113. to use the color look-up tables to turn your image on.  This type 
  114. of proceedure is described lightly in Vol 6 of inside Mac.
  115.  
  116. Steve Kohlmeyer
  117. U of Minnesota
  118.  
  119. +++++++++++++++++++++++++++
  120.  
  121. From: k044477@hobbes.kzoo.edu (Jamie R. McCarthy)
  122. Organization: Kalamazoo College
  123. Date: Mon, 22 Jun 1992 20:00:43 GMT
  124.  
  125. steve@mind.psych.umn.edu writes:
  126. >paul@fairgate.uucp (Paul Robichaux) writes:
  127. >>
  128. >>I have a requirement to display a 32-bit PICT "all at once"- that is,
  129. >>when I show it, I need to blast it to the screen as fast as possible.
  130. >>
  131. >>On a IIci with an EMachines accelerated graphics card, I can see the
  132. >>picture being drawn.
  133. >>
  134. >>Can anyone suggest a _fast_ way to get that image onscreen? I've 
  135. >>considered loading the picture into an offscreen bitmap and using
  136. >>CopyBits, and will probably try that tomorrow.
  137. >
  138. >Drawing offscreen and using CopyBits will make the image "appear" 
  139. >on the screen faster.  However, if your image is large and deep 
  140. >enough you will still see some scrolling with CopyBits.
  141.  
  142. If you're doing CopyBits right, an 8-bit full-screen image will appear
  143. in under two ticks.  If you're doing continuous animation, this is
  144. unacceptable, but if you're only doing the one picture, it's fast enough
  145. that it'll appear instantaneous.  Get up to four or five ticks and it
  146. looks less than perfect;  only when you get to ten ticks or so does it
  147. have a "wipe" effect.
  148.  
  149. Anyway, you're right--you do need to do an offscreen pixel map.  Read
  150. Tech Note 120 if you haven't already, and schmooze off its routines.
  151. You're lucky you're doing a true-color image;  you don't have to
  152. worry about color tables.  (The pmTable field should point to a
  153. dummy color table with zero entries, if you were wondering.)
  154.  
  155. Once you've got the pixmap, make a CGrafPort that points to it,
  156. SetGDevice() to the appropriate screen, and DrawPicture() into the port.
  157. Then SetGDevice() back, dispose of the port, and CopyBits() the pixmap
  158. onto the screen.
  159.  
  160. >The best way to make your image appear on the screen "instantly" is 
  161. >to use the color look-up tables to turn your image on.  This type 
  162. >of proceedure is described lightly in Vol 6 of inside Mac.
  163.  
  164. I strongly recommend using the palette manager to do this.  And if you
  165. absolutely positively have to have it onscreen in one tick, yes, you
  166. must do palette animation.  But that's not an option here, is it?
  167.  
  168. Though I'm nowhere near a guru (yet :-), I'll be happy to try to clarify
  169. or elaborate on any of that stuff.  Too bad Ben Haller gave up reading
  170. the group...
  171. - -- 
  172.  Never piss off a computer.
  173.  
  174. +++++++++++++++++++++++++++
  175.  
  176. From: ray@netcom.com (Ray Fischer)
  177. Date: Mon, 22 Jun 92 22:18:26 GMT
  178. Organization: Netcom - Online Communication Services
  179.  
  180. k044477@hobbes.kzoo.edu (Jamie R. McCarthy) writes ...
  181. >steve@mind.psych.umn.edu writes:
  182. >>paul@fairgate.uucp (Paul Robichaux) writes:
  183. >>>I have a requirement to display a 32-bit PICT "all at once"- that is,
  184. >>>when I show it, I need to blast it to the screen as fast as possible.
  185. >>>
  186. >>>Can anyone suggest a _fast_ way to get that image onscreen? I've 
  187. >>>considered loading the picture into an offscreen bitmap and using
  188. >>>CopyBits, and will probably try that tomorrow.
  189. >>
  190. >>Drawing offscreen and using CopyBits will make the image "appear" 
  191. >>on the screen faster.  However, if your image is large and deep 
  192. >>enough you will still see some scrolling with CopyBits.
  193. >
  194. >If you're doing CopyBits right, an 8-bit full-screen image will appear
  195. >in under two ticks.  If you're doing continuous animation, this is
  196. >unacceptable, but if you're only doing the one picture, it's fast enough
  197. >that it'll appear instantaneous.  Get up to four or five ticks and it
  198. >looks less than perfect;  only when you get to ten ticks or so does it
  199. >have a "wipe" effect.
  200.  
  201. CopyBits is fastest when copying between PixMaps that are the same depth.
  202. You'll do much better copying an 8-bit image to the 8-bit screen.  One
  203. way to do this is to make sure your offscreen pixmap is 8 bits deep.
  204. Either draw the PICT into an 8-bit PixMap, or copy the 32-bit PixMap to
  205. an offscreen 8-bit PixMap before copying it to the screen.
  206.  
  207. - -- 
  208. Ray Fischer
  209. rfischer@cs.stanford.edu
  210. ray@netcom.com
  211.  
  212. +++++++++++++++++++++++++++
  213.  
  214. From: hall@bcstec.ca.boeing.com (Robert J. Hall)
  215. Date: 24 Jun 92 16:27:03 GMT
  216. Organization: Boeing Computer Services, Seattle
  217.  
  218.  
  219.  > Can anyone suggest a _fast_ way to get that image onscreen? I've
  220.  > considered loading the picture into an offscreen bitmap and using
  221.  > CopyBits, and will probably try that tomorrow.
  222.  
  223. While doing multiple, repeated CopyBits to the display, I find that the
  224. srcCpy mode with the cursor hidden seems to work the quickest.
  225. - -- 
  226.  
  227.   Bob Hall - Systems Analyst, Boeing Computer Services
  228.  
  229. +++++++++++++++++++++++++++
  230.  
  231. From: busey@milton.u.washington.edu (Thomas Busey)
  232. Organization: University of Washington
  233. Date: Thu, 25 Jun 1992 19:01:02 GMT
  234.  
  235. k044477@hobbes.kzoo.edu (Jamie R. McCarthy) writes:
  236. >steve@mind.psych.umn.edu writes:
  237. >>paul@fairgate.uucp (Paul Robichaux) writes:
  238. >>>
  239. >>>I have a requirement to display a 32-bit PICT "all at once"- that is,
  240. >>>when I show it, I need to blast it to the screen as fast as possible.
  241. >>>
  242. >>>On a IIci with an EMachines accelerated graphics card, I can see the
  243. >>>picture being drawn.
  244. >>>
  245. >>>Can anyone suggest a _fast_ way to get that image onscreen? I've 
  246. >>>considered loading the picture into an offscreen bitmap and using
  247. >>>CopyBits, and will probably try that tomorrow.
  248. >>
  249. >>Drawing offscreen and using CopyBits will make the image "appear" 
  250. >>on the screen faster.  However, if your image is large and deep 
  251. >>enough you will still see some scrolling with CopyBits.
  252.  
  253. >>The best way to make your image appear on the screen "instantly" is
  254. >>to use the color look-up tables to turn your image on.  This type 
  255. >>of proceedure is described lightly in Vol 6 of inside Mac.
  256.  
  257. >I strongly recommend using the palette manager to do this.  And if you
  258. >absolutely positively have to have it onscreen in one tick, yes, you
  259. >must do palette animation.  But that's not an option here, is it?
  260.  
  261.  
  262. I'm in dire need of an example or some source code that does this. 
  263. I have implemented this with a 16 color grey image, but I had to do some 
  264. weird things to get it to work.  Basically, the problem comes from the fact
  265. that two entries of a palette, 0 and 255 are white and black, and can't be
  266. set to the background color.  Therefore when the offscreen pixmap is copied 
  267. to the screen the white and black parts of the image are visible right away,
  268. even if the rest of the palette is set to some background color.  The rest of
  269. the image becomes visible when I do color-lookup table switching with the 
  270. appropriate colors.
  271.  
  272. Has anyone managed "instant on" with offscreen pixmaps and picts without
  273. this problem?
  274.  
  275. Thanks
  276. Tom Busey
  277. Department of Psychology
  278. University of Washington
  279. Seattle WA 98195
  280. busey@u.washington.edu
  281.  
  282.  
  283. +++++++++++++++++++++++++++
  284.  
  285. From: k044477@hobbes.kzoo.edu (Jamie R. McCarthy)
  286. Organization: Kalamazoo College
  287. Date: Thu, 25 Jun 1992 23:04:49 GMT
  288.  
  289. busey@milton.u.washington.edu (Thomas Busey) writes:
  290. >k044477@hobbes.kzoo.edu (Jamie R. McCarthy) writes:
  291. >>I strongly recommend using the palette manager to do this.  And if you
  292. >>absolutely positively have to have it onscreen in one tick, yes, you
  293. >>must do palette animation.
  294. >
  295. >I'm in dire need of an example or some source code that does this. 
  296. >I have implemented this with a 16 color grey image, but I had to do some 
  297. >weird things to get it to work.  Basically, the problem comes from the fact
  298. >that two entries of a palette, 0 and 255 are white and black, and can't be
  299.                        ^^^^^^^ I think you mean color table
  300. >set to the background color.  Therefore when the offscreen pixmap is copied 
  301. >to the screen the white and black parts of the image are visible right away,
  302. >even if the rest of the palette is set to some background color.  The rest of
  303. >the image becomes visible when I do color-lookup table switching with the 
  304.   I think you mean palette animation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  305. >appropriate colors.
  306. >
  307. >Has anyone managed "instant on" with offscreen pixmaps and picts without
  308. >this problem?
  309.  
  310. It's true that the Palette Manager will refuse to touch the first and
  311. last CLUT entries--those must stay white and black.  But it sounds like
  312. you're on an 256-color device and you only need to display 16 colors.
  313. That leaves you plenty of room to define your own white and black.
  314.  
  315. What you want to do, is set up your offscreen pixmap with the
  316. appropriate color table, 16 shades of gray.  Then get the image into the
  317. pixmap somehow--DrawPicture() it in, or put the bits in with your own
  318. custom code, or whatever.  Then set up 16 colors in your _palette_ with
  319. pmAnimated usage.  It doesn't matter where these 16 are.  Your palette
  320. might be:
  321.  
  322. pmCourteous Black
  323. pmCourteous White
  324. pmAnimated Black
  325. pmAnimated 93% Gray
  326. pmAnimated 87% Gray
  327.  ...
  328. pmAnimated 13% Gray
  329. pmAnimated  7% Gray
  330. pmAnimated White
  331.  
  332. Then, make all those pmAnimated colors black, or whatever the
  333. background color is.  Just change them in the PaletteHandle, and call
  334. AnimatePalette().
  335.  
  336. Now you have to convince QuickDraw to map your color table's entries
  337. onto the entries in your palette.  You can't expect it to go by _color_,
  338. because the relevant section of the palette is all black by now.
  339. Fortunately, there's a way to get QuickDraw to close its eyes and adopt
  340. an arbitrary mapping.  If you set bit 14 of your source pixmap's color
  341. table's ctFlags field (got that?), CopyBits will not go through all its
  342. usual color-table checking.  Instead, it will use the value field of the
  343. ColorSpec referred to by each source pixel as an index into the
  344. destination _palette_ (_not_ color table).  More explicitly:  source
  345. pixel number n will be mapped into your destination _palette_ entry
  346. whose number is yourSourceColorTable.ctTable[n].value.  Note that no
  347. RGB colors come into this.  Note also that the destination palette
  348. entries don't have to be pmAnimated for this trick to work--that's
  349. because you have to AnimatePalette() later.
  350.  
  351. So what you want to do is, set the ctTable[n].value fields to the
  352. palette entries, which will be 2 through 17 if you use the palette I
  353. provided above.  Keep the ctTable[n].rgb fields the same, if you like;
  354. it doesn't matter.  CopyBits() the pixmap to the window.  Then
  355. AnimatePalette() the old (gray ramp) palette back in where the black
  356. entries are.  Ta-da!
  357.  
  358. This is only true for CopyBits;  it only works if you set bit 14
  359. (0x4000);  it only works on sequential (not indexed) color tables
  360. (because indexed color tables use the value field for something else);
  361. it only works when you're drawing to a window (because only windows can
  362. have palettes);  and it only works when Jupiter is in Sagittarius.  No,
  363. just kidding about that last part there.  See TN120, p. 49, and IM VI
  364. p. 20-17 for documentation.
  365.  
  366.  
  367. Whew.  That said, you should know that there's no easy way to get 16
  368. arbitrary colors on a _16_-color screen.  The Palette Manager will
  369. simply refuse to change white and black.  You have to use the Color
  370. Manager.  Alas.
  371.  
  372.  
  373. As always, I reserve the right to not know what I'm talking about.  If
  374. I'm wrong, please correct me!
  375. - -- 
  376.  Jamie McCarthy      Internet: k044477@kzoo.edu      AppleLink: j.mccarthy
  377.  Never piss off a computer.
  378.  
  379. ---------------------------
  380.  
  381. From: bc@Apple.COM (bill coderre)
  382. Subject: Macs cost too much
  383. Date: 26 Jun 92 12:12:17 GMT
  384. Organization: Apple Computer Inc., Cupertino, CA
  385.  
  386. Dave Meyers:
  387. |>Moreover, it would be really nice to be able to write a quick hack
  388. |>program to do something specific and just crank it using standard
  389. |>i/o.  That is only reasonable from a command line.  
  390.  
  391. Edward V Wright:
  392. |Not true.
  393. |Under System 7, there is a very "Mac-like" way to write programs like
  394. |this.  It's called a "drag and drop" application.  No command-line
  395. |required.
  396.  
  397. Dave, there's no reason to be so bitchy. It's quite simple to
  398. implement a shell program that you can link against to do all this
  399. stuff with. It's not QUITE as idiot-proof as UNIX, but almost.
  400.  
  401. I wrote such a shell before Drag-n-Drop, about three years ago. It
  402. provided a really swell user interface, all the right Mac code, and a
  403. really trivial programming interface. It was about 25 pages of code.
  404. About a dozen people used it to make "pipe" like utilities for Mac,
  405. with about a 1 hour learning curve. No Mac experience required.
  406.  
  407. I wish now that I had updated it for System 7, since then I could lay
  408. this argument to rest once and for all, by just giving it away. Sigh.
  409. If only I had all the time in the world.
  410.  
  411. Mind you, the shell still works Just Fine. Totally Seven Studly, ray
  412. bans and all, but not DnD. Sigh.
  413.  
  414. These are computers, Dave. Nothing's impossible. Not even too
  415. difficult. Just need to find someone that's already done it and bribe
  416. them with chocolate or coffee molecules.
  417.  
  418. Hey programmers! Let's make the UNIX people happy and write one of
  419. these shells and give it away all over the Usenet, so that everyone
  420. can do their little "pipey" things with zero hassle! Please! I will
  421. give the person who does this a pound of their favorite chocolate, a
  422. case of Anchor Steam, some Illy beans, or you-name-it.
  423.  
  424. Where's Don Pardo when you need him?
  425.  
  426. bill coderre
  427. Let's stop griping and start having fun
  428. ====================================================================
  429. DANGER: Apple Computer, Inc, maintains no official presence on the
  430. Usenet. Postings by persons from "apple.com" are not monitored or
  431. verified by Apple Computer, Inc. These persons are not entitled to
  432. speak for Apple Computer, Inc, or its subsidiaries and affiliates in
  433. any official capacity unless specifically indicated otherwise.
  434. Therefore Apple Computer, Inc makes no warrantee of the technical
  435. content of these postings, which are given "AS IS", and not subject to
  436. any implied warrantees in any province. Any opinions expressed in
  437. these postings is that of the poster, and might not represent those of
  438. Apple Computer, Inc, or its subsidiaries or affiliates.
  439. ====================================================================
  440.  
  441. +++++++++++++++++++++++++++
  442.  
  443. From: howard@netcom.com (Howard Berkey)
  444. Date: Sat, 27 Jun 92 20:47:51 GMT
  445. Organization: Netcom - Online Communication Services  (408 241-9760 guest) 
  446.  
  447. In article <69265@apple.Apple.COM> bc@Apple.COM (bill coderre) writes:
  448. >Dave Meyers:
  449. >|>Moreover, it would be really nice to be able to write a quick hack
  450. >|>program to do something specific and just crank it using standard
  451. >|>i/o.  That is only reasonable from a command line.  
  452. >
  453. >Edward V Wright:
  454. >|Not true.
  455. >|Under System 7, there is a very "Mac-like" way to write programs like
  456. >|this.  It's called a "drag and drop" application.  No command-line
  457. >|required.
  458. >
  459. >Dave, there's no reason to be so bitchy. It's quite simple to
  460. >implement a shell program that you can link against to do all this
  461. >stuff with. It's not QUITE as idiot-proof as UNIX, but almost.
  462.  
  463. UNIX idiot-proof???  THAT is something I have never heard before...:-)
  464.  
  465. >I wrote such a shell before Drag-n-Drop, about three years ago. It
  466. >provided a really swell user interface, all the right Mac code, and a
  467. >really trivial programming interface. It was about 25 pages of code.
  468. >About a dozen people used it to make "pipe" like utilities for Mac,
  469. >with about a 1 hour learning curve. No Mac experience required.
  470. >
  471. >I wish now that I had updated it for System 7, since then I could lay
  472. >this argument to rest once and for all, by just giving it away. Sigh.
  473. >If only I had all the time in the world.
  474.  
  475. Me Too!
  476.  
  477. >Hey programmers! Let's make the UNIX people happy and write one of
  478. >these shells and give it away all over the Usenet, so that everyone
  479. >can do their little "pipey" things with zero hassle! Please! I will
  480. >give the person who does this a pound of their favorite chocolate, a
  481. >case of Anchor Steam, some Illy beans, or you-name-it.
  482.  
  483. This would be a truly worthwhile endeavor, since although I love the Mac OS,
  484. there are simply some things which can be done faster with a shell.  Not a
  485. brain-dead semi-shell like dos, but a true set of shell utilities. For example
  486.  
  487.  
  488. 'cat *.employee | grep brownnoser > smithers.award'
  489.  
  490. is much faster than opening a Word Proccessor, making a new file called
  491. smithers.award, then searching through all of the employee files for the
  492. string brownnoser, and save all the lines containing it.  Even if you have
  493. a multi-file search capability.
  494.  
  495. The mac interface wouldn't have to be given up, the shell could run as an 
  496. application just like it does on a NeXT under NeXTStep.  It wouldn't have to 
  497. be UNIX or even UNIX-like, although IMHO the shell commands in UNIX are well
  498. thought out.  A set of useful utilities (grep-like search, pipelining, 
  499. shell scripting capabilities, etc...) would enhance the Mac OS, not take
  500. away from it.  And comparing it to making the machine more DOS-like would
  501. be like calling a Silicon Graphics Indigo or a NeXT DOS-like. 
  502.  
  503. - -Howard
  504. - -- 
  505. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  506. Howard Berkey                        howard@netcom.com
  507.     "What's that thing?"
  508.     "Well, it's a highly technical, sensitive instrument we use in
  509. computer repair.  Being a layman, you probably can't grasp exactly what
  510. it does.  We call it a two-by-four."
  511.         -- Jeff MacNelly, "Shoe"
  512.  
  513. +++++++++++++++++++++++++++
  514.  
  515. From: ewright@convex.com (Edward V. Wright)
  516. Organization: Engineering, CONVEX Computer Corp., Richardson, Tx., USA
  517. Date: Mon, 29 Jun 1992 19:27:06 GMT
  518.  
  519. >'cat *.employee | grep brownnoser > smithers.award'
  520.  
  521. >is much faster than opening a Word Proccessor, making a new file called
  522. >smithers.award, then searching through all of the employee files for the
  523. >string brownnoser, and save all the lines containing it.  Even if you have
  524. >a multi-file search capability.
  525.  
  526. Of course, you wouldn't be using emacs to store your employee information
  527. in ASCII text format if you had a decent database program, would you? The
  528. problem with all this talk about UNIX-like shells and piping is that it
  529. assumes that text files are the only type there is.  This is (almost) true
  530. on UNIX machines, but certainly isn't on the Mac (which is software-rich
  531. by comparison).  When you start getting into more sophisticated programs,
  532. these commands don't even make sense.  Can you imagine typing something like 
  533. "word -m -n my_doc | macdraw -x 100 -y 500 | hypercard -foo >  a_stack" ?
  534.  
  535.  
  536. ---------------------------
  537.  
  538. From: bc@Apple.COM (bill coderre)
  539. Subject: "True" Multitasking -- a quick summary
  540. Date: 26 Jun 92 12:25:00 GMT
  541. Organization: Apple Computer Inc., Cupertino, CA
  542.  
  543. Jeffrey Verdegan's excellent idea:
  544. |Okay, I confess a fundamental ignorance of the blood and guts of the Mac's
  545. |scheduler, and I kinda doubt Apple has plans to do anything like this, but as
  546. |long as we're talking about putting mutiple virtual Macs on top of A/UX...
  547.  
  548. |Would it be possible to either modify WaitNextEvent, or introduce
  549. |a new call whereby the programmer specifies, in addition to sleepTicks, 
  550. |a boolean indicating wheter the program is will to let the OS effectively
  551. |"substitute" a new value for sleepTicks, or some such thing?  Then, have a 
  552. |control panel/extension, that has sliders for all active programs that would
  553. |indicate what percentage of processor time the given app would get.  
  554.  
  555. The short answer: "Yes. A really excellent idea. Someone please do
  556. this: I will bribe you with chocolate, caffeine, alcohol, or what have
  557. you."
  558.  
  559. The slightly longer disclaimer: As Jeffrey said, I also am not a total
  560. gearhead about the Mac's dirty scheduler secrets. Yes, I know that a
  561. really reticent app can still starve out the others if it decides to
  562. be perverse and stupid, but apps like that deserve a little remedial
  563. batting practice over the head.
  564.  
  565. Such a little control panel should give many control freaks a totally
  566. sexual thrill. Like those disk formatters that let you tweak every
  567. single variable in the code. And I can ignore the whole thing knowing
  568. I'm not really missing much, but they can be happy since they are now
  569. 8% more efficient on some benchmark.
  570.  
  571. As I said, I like Mac so much I'll bribe you.
  572.  
  573. Incidentally, I am a Mac "item" collector, so if you want a genuine
  574. tee shirt (not the company store junk, but something rare and
  575. wonderful, like a 7.0.1 shirt or an Elsie shirt or something), contact
  576. me.
  577.  
  578. bill coderre
  579. let's stop complaining and start having fun
  580. ====================================================================
  581. DANGER: Apple Computer, Inc, maintains no official presence on the
  582. Usenet. Postings by persons from "apple.com" are not monitored or
  583. verified by Apple Computer, Inc. These persons are not entitled to
  584. speak for Apple Computer, Inc, or its subsidiaries and affiliates in
  585. any official capacity unless specifically indicated otherwise.
  586. Therefore Apple Computer, Inc makes no warrantee of the technical
  587. content of these postings, which are given "AS IS", and not subject to
  588. any implied warrantees in any province. Any opinions expressed in
  589. these postings is that of the poster, and might not represent those of
  590. Apple Computer, Inc, or its subsidiaries or affiliates.
  591. ====================================================================
  592.  
  593. +++++++++++++++++++++++++++
  594.  
  595. From: erh0362@tesla.njit.edu (Elliotte Rusty Harold)
  596. Date: 27 Jun 92 15:34:24 GMT
  597. Organization: New Jersey Institute of Technology
  598.  
  599. In article <69266@apple.Apple.COM>, bc@Apple.COM (bill coderre) writes:
  600. > Jeffrey Verdegan's excellent idea:
  601. > |Okay, I confess a fundamental ignorance of the blood and guts of the Mac's
  602. > |scheduler, and I kinda doubt Apple has plans to do anything like this, but as
  603. > |long as we're talking about putting mutiple virtual Macs on top of A/UX...
  604. > |Would it be possible to either modify WaitNextEvent, or introduce
  605. > |a new call whereby the programmer specifies, in addition to sleepTicks, 
  606. > |a boolean indicating wheter the program is will to let the OS effectively
  607. > |"substitute" a new value for sleepTicks, or some such thing?  Then, have a 
  608. > |control panel/extension, that has sliders for all active programs that would
  609. > |indicate what percentage of processor time the given app would get.  
  610.  
  611.     I think Windows already does this.  Does anyone know how well 
  612. it works?
  613.  
  614. Elliotte Rusty Harold        Department of Applied Mathematics
  615. elharo@m.njit.edu        New Jersey Institute of Technology
  616. erh0362@tesla.njit.edu        Newark, NJ 07103
  617.  
  618. +++++++++++++++++++++++++++
  619.  
  620. From: raynaud@sun7c.lri.fr (Alain Raynaud)
  621. Date: 30 Jun 92 11:47:47 GMT
  622. Organization: LRI - Univ. Paris-Sud / CNRS URA 410
  623.  
  624. It's funny people get so upset on true multitasking, now that Apple has
  625. announced
  626. (at the latest WWDC) that Apple is working on a tru multitasking plus
  627. protected
  628. memory MacOS : it sounds like this should stop all that debate : YES,
  629. Apple is
  630. planning to release such a beast.
  631.  
  632. Alain Raynaud
  633.  
  634. ---------------------------
  635.  
  636. From: k044477@hobbes.kzoo.edu (Jamie R. McCarthy)
  637. Subject: QuickDraw (was re: XWindows)
  638. Organization: Kalamazoo College
  639. Date: Fri, 26 Jun 1992 15:08:40 GMT
  640.  
  641. hugh@rschp1.anu.edu.au (Hugh Fisher) writes:
  642. >
  643. >    Color Quickdraw had some interesting problems, such as the non-support
  644. >    for 32 bit displays, and serious hassles with offscreen images and pixel
  645. >    values. These had to be fixed up later in 32 bit Quickdraw, while X11
  646. >    has supported 32 bit color from the start.
  647.  
  648. I'm not sure what you mean by "serious hassles."  Lawrence hinted that X
  649. doesn't support friendly, powerful sharing of a color table by multiple
  650. windows, which the Palette Manager provides.  If true, perhaps that's
  651. why offscreen images seem hard--the power doesn't come for free.
  652. Actually, I don't know how offscreen images could have been done more
  653. straightforwardly without sacrificing efficiency.
  654.  
  655. And just to clarify:  Hugh, as I'm sure you know, the original Color
  656. QuickDraw provided an interface for direct pixel images, which includes
  657. 32 bit displays.  That interface remains unchanged to this day.
  658.  
  659. I'm not a hardware person, and I don't know whether those displays were
  660. available in 1987.  Remember, this is when standard RAM was $100/meg.
  661. Should Apple have provided software support for hardware that very few
  662. people would have had, even if it meant delaying the product?  The
  663. interface for planar PixMaps was written, too, but it remains
  664. unimplemented because no one wants it.  Should Apple have taken the time
  665. to implement that in 1987 as well?
  666. - -- 
  667.  Jamie McCarthy      Internet: k044477@kzoo.edu      AppleLink: j.mccarthy
  668.  Never piss off a computer.
  669.  
  670. +++++++++++++++++++++++++++
  671.  
  672. From: hugh@rschp1.anu.edu.au (Hugh Fisher)
  673. Organization: Research School of Chemistry, ANU
  674. Date: Mon, 29 Jun 92 00:25:50 GMT
  675.  
  676. In article <1992Jun26.150840.23042@hobbes.kzoo.edu>, k044477@hobbes.kzoo.edu (Jamie R. McCarthy) writes:
  677. |> 
  678. |> I'm not sure what you mean by "serious hassles."  Lawrence hinted that X
  679. |> doesn't support friendly, powerful sharing of a color table by multiple
  680. |> windows, which the Palette Manager provides.  If true, perhaps that's
  681. |> why offscreen images seem hard--the power doesn't come for free.
  682. |> Actually, I don't know how offscreen images could have been done more
  683. |> straightforwardly without sacrificing efficiency.
  684.  
  685.   I wrote an article on this for MacTutor magazine after I had done
  686.   the color version of a Mac game (Fire Brigade). Briefly,
  687.  
  688.   With the original palette manager, you couldn't store offscreen PICTs
  689.   with animating colors. The Palette Manager prevented 'ordinary' drawing
  690.   calls from getting at pixels reserved for animation. If you set up an
  691.   offscreen pixmap for use with animating colors and tried to draw a PICT
  692.   in it, the PICT came out in black and white. You couldn't draw it and
  693.   then set up the animation pixel values either, or at least not by following
  694.   the Mac API.
  695.  
  696.   Even worse, the palette manager would rearrange the palette pixel values 
  697.   on the fly. After setting up an offscreen pixmap, a simple switch to
  698.   another appication _might_ cause the palette to be reshuffled. Next time
  699.   the app copied from the pixmap to the screen, all the colors changed.
  700.  
  701.   Since any real animation/paint type application has to work with
  702.   color table animation and offscreen pixmaps, the only practical way
  703.   to write the code was to forget about the Palette Manager and fool
  704.   around directly with the Color Manager calls.
  705.  
  706.   This all got fixed with 32 bit Quickdraw and the new pmExplicit + colors,
  707.   which, sorry to labour the point, is much more like X Windows: there is
  708.   a nice, straightforward 1:1 mapping between stored pixel values and index
  709.   numbers in palettes/color tables.
  710.  
  711. |> 
  712. |> And just to clarify:  Hugh, as I'm sure you know, the original Color
  713. |> QuickDraw provided an interface for direct pixel images, which includes
  714. |> 32 bit displays.  That interface remains unchanged to this day.
  715. |> 
  716. |> I'm not a hardware person, and I don't know whether those displays were
  717. |> available in 1987.  Remember, this is when standard RAM was $100/meg.
  718. |> Should Apple have provided software support for hardware that very few
  719. |> people would have had, even if it meant delaying the product?  The
  720. |> interface for planar PixMaps was written, too, but it remains
  721. |> unimplemented because no one wants it.  Should Apple have taken the time
  722. |> to implement that in 1987 as well?
  723. |> -- 
  724. |>  Jamie McCarthy      Internet: k044477@kzoo.edu      AppleLink: j.mccarthy
  725. |>  Never piss off a computer.
  726.  
  727.   It wouldn't have taken very much to provide future support. The
  728.   specification of an X Windows color table entry has three 16 bit
  729.   fields for red, green, and blue; and a 32 bit field for the actual
  730.   pixel value. The Mac format has the same fields but only 8 bits
  731.   for the pixel. Sure, you can find out the actual 32 bit value being
  732.   used if you need it, but not just by looking at the color table entry.
  733.  
  734.   It did cause some trouble. The first few 24 bit color displays from
  735.   Radius, etc had to patch the system software and had compatibility
  736.   problems.
  737.  
  738.     Hugh Fisher
  739.  
  740. ---------------------------
  741.  
  742. From: mitch@palmtree.Eng.Sun.COM (Mitchell Jerome)
  743. Subject: Tech Notes Stack
  744. Date: 26 Jun 1992 20:06:29 GMT
  745. Organization: Sun Microsystems
  746.  
  747.  
  748. - ---
  749.  
  750. I've downloaded the Tech Notes Hypercard stack from ftp.apple.com.
  751.  
  752. How do I copy (and paste) the code from inside a Technical Note into my C program?
  753. The Edit menu's Copy, Cut and Paste items are disabled, and pressing the mouse
  754. button and dragging over the source code I want doesn't highlight the text.
  755.  
  756. I'm using the Hypercard 2.1 program that came with the Mac Quadra 900.
  757.  
  758. - - Mitch
  759.  
  760. - -- 
  761. Mitch Jerome
  762. mitch@eng.sun.com
  763.  
  764.  
  765. +++++++++++++++++++++++++++
  766.  
  767. From: molla@paone.uucp (Levent Mollamustafaoglu)
  768. Date: 26 Jun 92 21:16:49 GMT
  769. Organization: Aiken Computation Lab, Harvard University
  770.  
  771. In article <l4mu65INNfvg@appserv.Eng.Sun.COM> mitch@palmtree.Eng.Sun.COM writes:
  772. >
  773. >---
  774. >
  775. >I've downloaded the Tech Notes Hypercard stack from ftp.apple.com.
  776. >
  777. >How do I copy (and paste) the code from inside a Technical Note into my C program?
  778. >The Edit menu's Copy, Cut and Paste items are disabled, and pressing the mouse
  779. >button and dragging over the source code I want doesn't highlight the text.
  780. >
  781. >I'm using the Hypercard 2.1 program that came with the Mac Quadra 900.
  782. >
  783. The Stack menus are changed and fields locked at launch time, so you can do
  784. the following :
  785.  
  786. When you launch the stack, press the option key. The menus will not disappear
  787. then and you can choose the field tool and unlock the main field that has the
  788. text of the tech note. Once the field is unlocked, it will enable copy-paste
  789. etc. 
  790.  
  791. Be careful though. Once you do these, the stack is vulnerable. Be sure not
  792. to change/delete anything.
  793.  
  794.  
  795. ===========================================================================
  796. Dr. Levent Mollamustafaoglu       Harvard University    
  797. molla@paone.harvard.edu    molla@metatron.harvard.edu
  798. ===========================================================================
  799.  
  800. ---------------------------
  801.  
  802. From: francois@welchgate.welch.jhu.edu (Francois Schiettecatte)
  803. Subject: appe application
  804. Organization: Johns Hopkins Univ. Welch Medical Library
  805. Date: Fri, 26 Jun 1992 21:23:13 GMT
  806.  
  807. Hi
  808.  
  809. I am developing a small 'appe' application and it's icon does not
  810. show up on the bottom of the screen when I start up my Mac and
  811. it is in the extensions folder. 
  812. I guess I need to set something using resedit, but what?
  813.  
  814.  
  815.  
  816. thanks
  817.  
  818. francois
  819.  
  820.  
  821. Francois Schiettecatte
  822. Software Engineer
  823. Welch Medical Library
  824. Johns Hopkins University
  825. Internet: francois@library.welch.jhu.edu
  826. Phone    : (410) 955-7581
  827.  
  828.  
  829. +++++++++++++++++++++++++++
  830.  
  831. From: zobkiw@world.std.com (Joe Zobkiw)
  832. Organization: The World Public Access UNIX, Brookline, MA
  833. Date: Sat, 27 Jun 1992 14:56:48 GMT
  834.  
  835. >
  836. >I am developing a small 'appe' application and it's icon does not
  837. >show up on the bottom of the screen when I start up my Mac and
  838. >it is in the extensions folder. 
  839. >I guess I need to set something using resedit, but what?
  840. >
  841.  
  842. appe files are scanned for INIT code at startup time. You must write an
  843. INTI portion of your appe in order to make it show it's icon. This is not
  844. an automatic feature (although, maybe it would be nice.)
  845.  
  846. You can use Paul Mercer's ShowINIT code to do this. This is available
  847. in numerous places (ftp, America Online, etc.) I would suggest that you
  848. use this code instead of writing your own since it works very nicely and
  849. has become somewhat of a standard.
  850.  
  851.  
  852.  
  853. - -- 
  854. - -- joe zobkiw                      Internet: zobkiw@world.std.com
  855. - --                                      AOL: AFL Zobkiw  
  856. - -- mac.synthesis.MIDI.THINK C.OOP
  857. - -- asm.comm.networks.cool tunes...
  858.  
  859. ---------------------------
  860.  
  861. From: gray@tinman.asel.udel.edu (John Gray)
  862. Subject: MacApp I<Classname> and ViewEdit
  863. Organization: AI duPont Institute
  864. Date: Fri, 26 Jun 1992 20:32:11 GMT
  865.  
  866. Greetings:
  867.  
  868. When using MacApp, the rules of the game say that when deriving a class
  869. you should have a member function called I<Classname> and it should call
  870. the I<Classname> from the derived class.  Is this necessary for Views
  871. that are created with ViewEdit and then brought in by 
  872. gViewServer->NewTemplateWindow and then selected out the new window.  
  873. All the parameters to IView and its derived types seem to be exactly
  874. what is being set by ViewEdit.
  875.  
  876. I have been failing to call this inherited I<Classname> functions for the 
  877. Views and am having no problems.  Is this ok or am I headed for trouble?
  878.  
  879. Thanks
  880. John Gray
  881. gray@asel.udel.edu
  882.  
  883. +++++++++++++++++++++++++++
  884.  
  885. From: anders@verity.com (Anders Wallgren)
  886. Date: 26 Jun 92 21:24:29 GMT
  887. Organization: Verity, Inc., Mountain View, CA, USA
  888.  
  889. In article <1992Jun26.203211.26776@udel.edu> John Gray,
  890. gray@tinman.asel.udel.edu writes:
  891. >When using MacApp, the rules of the game say that when deriving a class
  892. >you should have a member function called I<Classname> and it should call
  893. >the I<Classname> from the derived class.  Is this necessary for Views
  894. >that are created with ViewEdit and then brought in by 
  895. >gViewServer->NewTemplateWindow and then selected out the new window.  
  896. >All the parameters to IView and its derived types seem to be exactly
  897. >what is being set by ViewEdit.
  898.  
  899. Strictly speaking, you do not need an IMyClass method if you are only
  900. going to instantiate your views from resources.  Whether or not you do
  901. include them depends on what the chances are that someone else will use
  902. this class and perhaps choose to not use resources.  It's sometimes
  903. easier to write stuff that you aren't sure that you're going to need when
  904. you write the class, rather than four months later when you decide to
  905. change your mind, or someone changes your mind for you.
  906.  
  907. anders
  908.  
  909. ---------------------------
  910.  
  911. From: anthony@src.umd.edu (Anthony LaVigna)
  912. Subject: Vertical Text in QuickDraw
  913. Organization: College of Engineering, University of Maryland, College Park
  914. Date: Fri, 26 Jun 1992 21:11:36 GMT
  915.  
  916.  
  917.  
  918. I working on a program where I need to draw
  919. text vertically instead of horizontally.  How
  920. do I draw text vertically?  Thanks.
  921.  
  922.  
  923. Tony LaVigna
  924. anthony@src.umd.edu
  925.  
  926. +++++++++++++++++++++++++++
  927.  
  928. From: minow@Apple.COM (Martin Minow)
  929. Date: 27 Jun 92 02:21:27 GMT
  930. Organization: Apple Computer Inc., Cupertino, CA
  931.  
  932.  
  933. anthony@alumni.src.umd.edu asks about drawing text vertically. When I
  934. had this problem, I solved it by writing the text into an offscreen
  935. grafport, and transposing the port. Here's the subroutine for your
  936. reading pleasure:
  937.  
  938. /*
  939.  * Transpose an arbitrary bitmap (i.e., rotate it 90!).
  940.  */
  941.  
  942. #ifdef DOCUMENTATION
  943.  
  944. Title        Transpose a Bitmap
  945.  
  946. Usage
  947.  
  948.         #include "Support.h"
  949.  
  950.         GrafPtr
  951.         TransposeGrafPort(srcPort)
  952.         GrafPtr            srcPort
  953.         
  954.         Return a GrafPort whose bitmap that is the transpose of
  955.         the source bitmap (i.e., what was vertical in the source
  956.         becomes horizontal in the destination).  This routine calls
  957.         routines in the OffscreenGrafPort library to create the
  958.         new port.
  959.             
  960.         If the source bitmap is invalid (or there is no memory),
  961.         TransposeGrafPort returns NIL (zero).
  962.         
  963.         The result is rotated 90! counter-clockwise.  I.e., the
  964.         upper-left pixel in the source becomes the lower-left
  965.         pixel in the destination:
  966.         
  967.             ****             **  ***
  968.             *    *            *   *
  969.             ****    becomes    *   *
  970.             *      *            *   *
  971.             *    *            ********
  972.             
  973.  
  974. Normal Usage:
  975.  
  976.             GrafPtr            savePort;
  977.             GrafPtr            srcPort;
  978.             GrafPtr            dstPort;
  979.  
  980.             GetPort(&savePort);
  981.             srcPort = CreateOSGrafPort(rect);
  982.             ... drawing commands ...
  983.             dstPort = TransposeGrafPort(srcPort);
  984.             SetPort(savePort);
  985.             DeleteOSGrafPort(srcPort);
  986.             if (dstPort != NIL) {
  987.                 CopyBits(
  988.                     &dstPort->portBits,
  989.                     &window->portBits,
  990.                     &dstPort->portBits.bounds,
  991.                     &drawing_rect,
  992.                     srcCopy,
  993.                     NIL
  994.                 );
  995.                 DeleteOSGrafPort(dstport);
  996.             }
  997.  
  998. author
  999.  
  1000.         Martin Minow.
  1001.     
  1002. Copyright
  1003.     
  1004.         Copyright 1989, Martin Minow.  All rights reserved.
  1005.  
  1006.         You may redistribute or incorporate this software in
  1007.         any application without restriction as long as this
  1008.         copyright notice remains intact and this source is not
  1009.         redistributed for profit.
  1010.         
  1011. #endif
  1012.  
  1013. #include "Support.h"
  1014.  
  1015. /*
  1016.  * This macro returns a pointer to the byte containing [v, h]
  1017.  *        base        is src_base or dst_base
  1018.  *        rowBytes    is src_rowBytes or dst_rowBytes
  1019.  *        v            is the vertical coordinate
  1020.  *        h            is the horizontal coordinate
  1021.  */
  1022. #define loc(base, rowBytes, v, h)        \
  1023.     (unsigned char *) ((base) + ((long) (v) * (rowBytes)) + ((h) >> 3))
  1024.  
  1025. GrafPtr
  1026. TransposeGrafPort(srcPort)
  1027. GrafPtr                srcPort;
  1028. {
  1029.         register short            i;
  1030.         register short            j;
  1031.         register short            k;
  1032.         register unsigned char    *ptr;
  1033.         GrafPtr                    dstPort;
  1034.         BitMap                    *src;
  1035.         BitMap                    *dst;
  1036.         Rect                    dst_rect;
  1037.         int                        dst_width, dst_height;
  1038.         int                        src_max;
  1039.         Ptr                        src_base;
  1040.         Ptr                        dst_base;
  1041.         short                    src_rowBytes, dst_rowBytes;
  1042.  
  1043.         /*
  1044.          * Get the destination bitmap organization (transposed)
  1045.          * and create the destination bitmap..
  1046.          */
  1047.         src = &srcPort->portBits;
  1048.         dst_rect.top    = src->bounds.left;
  1049.         dst_rect.left    = src->bounds.top;
  1050.         dst_rect.bottom    = src->bounds.right;
  1051.         dst_rect.right    = src->bounds.bottom;
  1052.         if ((dstPort = CreateOSGrafPort(dst_rect)) == NIL)
  1053.             return (NIL);
  1054.         EraseRect(&dst_rect);
  1055.         dst = &dstPort->portBits;
  1056.         src_base = src->baseAddr;
  1057.         dst_base = dst->baseAddr;
  1058.         src_rowBytes = src->rowBytes;
  1059.         dst_rowBytes = dst->rowBytes;
  1060.         dst_width = width(dst->bounds);
  1061.         dst_height = height(dst->bounds);
  1062.         k = width(src->bounds);                    /* For mirror transform    */
  1063.         for (j = 0; j < dst_height; j++) {        /* dst v, src h            */
  1064.             --k;                                /* Horiz pixel in src    */
  1065.             for (i = 0; i < dst_width; i++) {    /* dst h, src v            */
  1066.                 ptr = loc(src_base, src_rowBytes, i, k);
  1067.                 if ((((*ptr) >> (7 - (k & 7))) & 1) != 0) {
  1068.                     ptr = loc(dst_base, dst_rowBytes, j, i);
  1069.                     *ptr |= (0x80 >> (i & 0x7));
  1070.                 }
  1071.             }
  1072.         }
  1073.         return (dstPort);
  1074. }
  1075.  
  1076. - ---
  1077.  Note: the above should have tabs set every 4 bytes.
  1078. Also note that it presupposes a subroutine that creates an offscreen
  1079. GrafPort to hold the destination rect.
  1080.  
  1081. Martin Minow
  1082. minow@apple.com
  1083.  
  1084. +++++++++++++++++++++++++++
  1085.  
  1086. From: peirce@outpost.SF-Bay.org (Michael Peirce)
  1087. Date: 27 Jun 92 05:53:27 GMT
  1088. Organization: Peirce Software
  1089.  
  1090.  
  1091. In article <1992Jun26.211136.13792@src.umd.edu> (comp.sys.mac.programmer), anthony@src.umd.edu (Anthony LaVigna) writes:
  1092. > I working on a program where I need to draw
  1093. > text vertically instead of horizontally.  How
  1094. > do I draw text vertically?  Thanks.
  1095.  
  1096. The only way is to draw it offscreen, rotate the bitmap, then copy
  1097. this to the screen.  Sorry (but QuickDraw/GX fixes this - yeah!)
  1098.  
  1099. - --  Michael Peirce      --   peirce@outpost.SF-Bay.org
  1100. - --  Peirce Software     --   Suite 301, 719 Hibiscus Place
  1101. - --                      --   San Jose, California USA 95117
  1102. - --  Makers of...        --   voice: (408) 244-6554 fax: (408) 244-6882
  1103. - --            SMOOTHIE  --   AppleLink: peirce & America Online: AFC Peirce
  1104.  
  1105. ---------------------------
  1106.  
  1107. End of C.S.M.P. Digest
  1108. **********************
  1109.